perm filename UPDATE.SAI[4,ALS] blob sn#059724 filedate 1973-08-28 generic text, type T, neo UTF8
00010	BEGIN "CONVER"
00020	DEFINE ⊂="COMMENT";  ⊂ 8/28/73 Inserts corrected headers in NEWPH format;
00030	
00040	REQUIRE "BLOCKS.HDR[4,ALS]" SOURCE_FILE;
00050	INTEGER ARRAY LFILE[0:'177];
00060	INTERNAL INTEGER ARRAY INDATA[0:4000];
00070	INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
00080	INTERNAL INTEGER FLAG,CFLAG,RFLAG,UPCNT,TABTOT;
00090	INTERNAL INTEGER SEGC,INTOT,SEGTOT,HINT,BPT,PHW,SMOCNT,SMCNT2,ZCNT;
00100	INTEGER SUM,S1,S2,S3,S4,RL;
00110	INTEGER ARRAY N1[0:3];
00120	INTEGER HINCNT,HCOUNT,HINDEX,EOF,EOFA,EOFB,BRK;
00130	INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,CHANX;
00140	STRING READ1,READ2,READ3,FILEL,FILEI,TFILE,TFILEI,FILLST,PREHINT;
00150	INTEGER ARRAY OLDPH,NEWPH,NEWPHX[0:63];
00160	DEFINE ARRSIZ="4096";
00170	BOOLEAN ER;
00180	
00190	STRING PROCEDURE HEADER;
00200	  BEGIN "HEADER"
00210	  STRING H1; INTEGER I,J,K;
00220	  IF HCOUNT>0 THEN BEGIN HCOUNT←HCOUNT-1;   HINCNT←HINCNT+1;
00230	    RETURN(PREHINT) END   ELSE WHILE HCOUNT=0 DO BEGIN "XX"
00240	  I←LFILE[HINDEX];  K←LDB(POINT(12,I,23)); J←SEGC-K; 
00250	  IF I=0 THEN BEGIN PREHINT←"NU"; HCOUNT←999; RETURN(PREHINT) END;
00260	  IF J ≥ 0 THEN BEGIN "LATCH"
00270	   H1←CVXSTR(LDB(POINT(12,I,11)) LSH 24);
00280	   IF H1≠0 THEN BEGIN
00290	     PREHINT←H1; HCOUNT←LDB(POINT(12,I,35));
00300	     HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; HINCNT←HINCNT+1; 
00310	     RETURN(PREHINT); DONE  END
00320	     ELSE BEGIN PREHINT←"NU"; HCOUNT←LDB(POINT(12,I,35));
00330	     HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; RETURN(PREHINT); DONE; END;
00340	  END "LATCH";
00350	 PREHINT←"NU"; RETURN(PREHINT); END "XX";
00360	END "HEADER";
00370	
     

00010	STDBRK(1);
00020	 SETBREAK(14,"∃",NULL,"INS");
00022	 SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
00025	 SETBREAK(16,'56,NULL,"INA");
00030	
00060	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5; CHAN6←6;
00070	
00080	WHILE EOFA=0 DO BEGIN "LISTREAD"
00090	HINDEX←21; HCOUNT←HINCNT←0;
00100	FILEI←STRIN("Data file to be corrected ");
00110	IF FILEI="" THEN DONE;
00120	
00130	CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
00140	LOOKUP(CHAN4,FILEI,ER);
00150	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEI&" File = ");
00160	LOOKUP(CHAN5,FILEI←INCHWL,ER); END;  EOFA←0;
00170	ARRYIN(CHAN4,LFILE[0],'200);	⊂ Input header;
00180	SEGTOT←(LFILE[0]*6)%256;
00190	OUTSTR(FILEI&" "&CVS(SEGTOT)&"   ");
00200	 FOR I←0 STEP 1 UNTIL 127 DO OUTSTR(CVOS(LFILE[I])&TB);
00210	IF RL≠2 THEN RL←RL+1 ELSE BEGIN OUTSTR(CRLF); RL←0; END;
00220	ARRYIN(CHAN4,INDATA[0],SEGTOT*4); CLOSE(CHAN4);
00225	
00240	READ2←FILEI; READ1←SCAN(READ2,16,J)&"HD2";
00250	CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
00260	LOOKUP(CHAN4,READ1,ER);
00280	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&READ1&" File = ");
00290	LOOKUP(CHAN4,READ1←INCHWL,ER); END;  EOFA←0;
00295	FILLST←INPUT(CHAN4,14);
00300	CLOSE(CHAN4);
00310	
00340	J←21;
00350	FOR I←0 STEP 1 UNTIL 127 DO BEGIN
00360	  READ1←SCAN(FILLST,1,K);
00370	  OUTSTR(READ1&TB);
00380	  L←SCAN(READ1,15,K); DPB(L,POINT(12,LFILE[J],11));
00390	  L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(12,LFILE[J],23));
00400	  L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(12,LFILE[J],35));
00410	  OUTSTR(CVOS(LFILE[J])&CRLF);
00420	  J←J+1; END;
00430	
00440	READ2←FILEI;
00450	READ1←SCAN(READ2,16,J)&"T02";
00460	OUTSTR("Ready to write "&READ1&TB);
00470	OPEN(CHAN4,"DSK",'10,0,10,0,0,EOF);
00480	ENTER(CHAN4,READ1,0);
00490	ARRYOUT(CHAN4,LFILE[0],'200);
00500	ARRYOUT(CHAN4,INDATA[0],SEGTOT*4); CLOSE(CHAN4);
00510	END "LISTREAD";
00520	RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN6);
00530	
00540	END "CONVER";